package com.tiancheng.trade.payment.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 退款
 */
@Getter
@Setter
@TableName("refund_flow")
public class PaymentRefundFlow implements Serializable {

	// 主键
	@TableId(type = IdType.ASSIGN_ID)
	private Long id;

	/**
	 * 退款流水号
	 */
	private String flowId;

	/**
	 * 退对应的支付流水号
	 */
	private String payFlowId;

	/**
	 * 退款订单号
	 */
	private String paymentId;

	/**
	 * 退款渠道订单号
	 */
	private String transactionId;

	/**
	 * 收单机构订单号
	 */
	private String tradeNo;

	/**
	 * 订单名称
	 */
	private String orderName;

	/**
	 * 下单应用
	 */
	private String orderApp;

	/**
	 * 订单总金额
	 */
	private Integer orderAmount;

	/**
	 * 实际退款金额
	 */
	private Integer amount;

	/**
	 * 申请退款金额
	 */
	private Integer refundAmount;

	/**
	 * 退款状态
	 */
	private String refundStatus;

    /**
     * 退款渠道
     */
    private String paymentChannel;
	/**
	 * 机构支付通道id
	 */
	private Long orgPaymentChannelId;
	/**
	 * 支付方式
	 */
	private String paymentWay;

	/**
	 * 渠道费率
	 */
	private BigDecimal slottingRate;

	/**
	 * 退款时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private LocalDateTime flowTime;

	/**
	 * 创建时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private LocalDateTime createTime;

	/**
	 * 修改时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private LocalDateTime updateTime;

	/**
	 * 用户id
	 */
	private String userId;

	/**
	 * 用户手机号
	 */
	private String userTel;

	/**
	 * 支付场景（app/miniapp/H5/wxapp/pcweb/face-swiping/scan）
	 */
	private String payScene;

	/**
	 * 清分状态：ING=清分中；ERROR=异常；SUCCESS=清分完成
	 */
	private String settleStatus;

	/**
	 * 退款类型，0-整单，1-部分
	 * @see com.tiancheng.trade.payment.enums.ChannelRefundTypeEnum
	 */
	private Integer refundType;
	/**
	 * 返还子订单平台优惠金额
	 */
	private Integer refundPlatformDiscount;
	/**
	 * 返还渠道优惠金额
	 */
	private Integer refundChannelDiscount;

}
